//在system V 标准下设计的三种模式具有极大地相似性，在底层为了统一管理IPC资源设计了一套方案
//其实对IPC资源的管理就是对于IPC相关内核数据结构的管理而在设计的时候为了管理这三种不同类型的资源：在c语言的基础上实现了多态原理
//在man shmctl msgctl semctl 的时候 你会发现在对应的内核提供给用户的结构体中都有一个相同的字段 （struct ipc_perm）而这个就是基类
//而struct shmid_ds | struct msqid_ds | struct semid_ds 就是三个基类
//在上面可以通过一个柔性数组进行统一的ipc资源管理  


// #include "comm.hpp"

// int main()
// {
//     int msqid = msgget(GetKey(), IPC_CREAT);

//     struct msqid_ds ds;
//     msgctl(msqid, IPC_STAT, &ds);
//     cout << ToHex(ds.msg_perm.__key) << endl;
//     cout << "getpid : " << getpid() << "  lastpid : " << ds.msg_lspid << endl;

//     sleep(5);
//     int rn = msgctl(msqid, IPC_RMID, nullptr);
//     return 0;
// }



#include "comm.hpp"

int main()
{
    int semid = semget(GetKey(), 10,IPC_CREAT);


    sleep(5);
    int rn = semctl(semid,1, IPC_RMID);
    return 0;
}